前天我們解釋了一些常用的邏輯閘,例如:and、or 等等,我們也學到了可以把多個條件同時放進這些邏輯閘中的 list,然而當今天你只想針對同個欄位做多個數值的判斷的話,使用這個方法會降低很多速度,今天要介紹的 in、nin 可以協助你在針對一個欄位做查詢時,加速你的查詢速度,今天同樣會用到之前插入的資料集以及資料模型,忘記模型的人可以參考這個連結
今天主要會教學的內容如下:
語法:collection.find_one({“欄位名稱”: {"$in": ['數值', '數值', ...]}})
這個語法可以協助我們針對指定的欄位做多個數值的配對,他會配對所有有出現在串列當中的數值,只要有符合的就會將資料回傳回來。
# demo in
print("---- demo in ----")
result = collection.find(
{"jurisdiction": {"$in": ["第四分局", "第六分局"]}},
{"jurisdiction": 1},
limit=5
)
pprint(list(result))
這個範例我們把查找資料的條件設定成分局名稱是第四分局或是第六分局,並且只把分局這個欄位顯示出來,且取資料前五筆,可以看到下圖中的資料都是第四以及第六分局。
語法:collection.find_one({“欄位名稱”: {"$nin": ['數值', '數值', ...]}})
基本上這個語法就是 in 語法的反面,會配對指定欄位中,任何不在串列中的資料,下方直接附上範例
print("---- demo nin ----")
result = collection.find(
{"jurisdiction": {"$nin": ["第四分局", "第六分局"]}},
{"jurisdiction": 1},
limit=5
)
pprint(list(result))
可以看到執行結果當中找到的資料分局名稱都不是第四以及第六分局